草庐IT

Redis Hash哈希散列

全部标签

Ruby:按值查找散列中的项目

我目前正在使用如下所示的ruby​​哈希:{"employee"=>[{"name"=>"john","level"=>"1","position"=>"S1"},{"name"=>"bill","level"=>"2","position"=>"S2"}]}这是员工的两个例子,我需要能够通过值(value)观来吸引员工。例如,我想获得级别==2的所有员工,或位置==S1的所有员工。我如何在Ruby中执行此操作? 最佳答案 使用Hash#select或Array#select.level_2_employees=infoHash["

ruby - 如何在 Ruby 中打乱数组/哈希?

出于学习目的,这叫什么?正在创建的对象是数组还是散列?stack_of_cards=[]我是这样填的:stack_of_cards这是我的卡片类:classCardattr_accessor:number,:suit,:valuedefinitialize(number,suit,value)@number=number@suit=suit@value=valueenddefto_s"#{@number}of#{@suit}"endend我想打乱这个数组/哈希中的元素(这叫什么?:S)有什么建议吗? 最佳答案 stack_of_ca

ruby - 如何在我的数据库中存储哈希值?

是否有Ruby或Activerecord方法可以在数据库字段中写入和读取哈希值?我需要编写一个网络实用程序来接受POST数据并将其保存到数据库中,然后再以其原始哈希形式从数据库中提取数据。但理想情况下,不要“知道”结构是什么。换句话说,我的数据存储需要独立于任何特定的哈希键集。例如,有一次外部应用可能会POST到我的应用:"user"=>"Bill","city"=>"NewYork"但另一次外部应用可能会POST到我的应用:"company"=>"FooInc","telephone"=>"555-5555"所以我的实用程序需要将任意散列保存到数据库中的text字段,然后,稍后根据保

ruby - 使用 Ruby,读取文件,将名称/值对包含到哈希中

我有一个文件,每一行都有一个名称/值对,我想打开该文件,读取每一行并初始化一个散列。文件:john,234joe,2222并加载一个散列,这样我就可以遍历键值对。 最佳答案 Hash[*File.read('f.txt').split(/[,\n]+/)] 关于ruby-使用Ruby,读取文件,将名称/值对包含到哈希中,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4119763

ruby - 填充 Ruby 哈希的更好方法?

有更好的方法吗?(看起来很笨重)form_params={}form_params['tid']=tidform_params['qid']=qidform_params['pri']=priform_params['sec']=secform_params['to_u']=to_uform_params['to_d']=to_dform_params['from']=fromform_params['wl']=wl 最佳答案 form_params={"tid"=>tid,"qid"=>qid}或者你可以做form_params=

ruby - 使用 block 创建哈希 (Ruby)

我可以从block创建Ruby哈希吗?像这样的东西(虽然这具体不起作用):foo=Hash.newdo|f|f[:apple]="red"f[:orange]="orange"f[:grape]="purple"end 最佳答案 在Ruby1.9中(或加载了ActiveSupport,例如在Rails中),您可以使用Object#tap,例如:foo=Hash.new.tapdo|bar|bar[:baz]='qux'end您可以将block传递给Hash.new,但这用于定义默认值:foo=Hash.new{|hsh,key|hs

ruby - 删除散列中不在数组中的键

我找不到从散列中删除不在给定键名称数组中的键的方法。我读到我可以使用except或slice,但我如何才能向他们提供我想保留的键名列表?例如,如果我有这个散列:entry={:title=>"casablanca",:media=>"dvd",:localeLanguage=>"en",:imdb=>"",:freebase=>"",:originalTitle=>'casablanca',:season=>'1',:episode=>'3'}我只想保留,比如说,:title、:media和:localeLanguage,我怎么能只保留那些值我指定的键名?

ruby-on-rails - 将散列键转换为小写 -- Ruby 初学者

我的表格字段名称是小写的,而我从CSV文件中获取的字段名称是驼峰式的。无论如何我可以将哈希数组的键转换为小写吗?这是我现在的代码:CSV.foreach(file,:headers=>true)do|row|Users.create!(row.to_hash)end这是失败的,因为键是驼峰式的(我已经通过手动编辑文件使标题行全部小写来验证这一点)。附言。我也很想知道为什么Rails开始时会考虑表字段名称的大小写敏感性? 最佳答案 您可以只对CSV使用header_converters选项:CSV.foreach(file,:head

ruby - Double-splat 运算符破坏性地修改哈希值——这是 Ruby 错误吗?

我注意到我发现Ruby2.1.1中的**(double-splat)运算符有一个非常令人惊讶的行为。当在**hash之前使用键值对时,hash保持不变;但是,当仅在**hash之后使用键值对时,哈希将被永久修改。h={b:2}{a:1,**h}#=>{a:1,b:2}h#=>{b:2}{a:1,**h,c:3}#=>{a:1,b:2,c:3}h#=>{b:2}{**h,c:3}#=>{b:2,c:3}h#=>{b:2,c:3}为了比较,请考虑数组上单*运算符的行为:a=[2][1,*a]#=>[1,2]a#=>[2][1,*a,3]#=>[1,2,3]a#=>[2][*a,3]#=>[

Ruby:删除哈希中具有特定值的所有键值对

我的哈希:hash={value1:"2",value2:"1",value3:"6",value4:"2"}我想要的是像这样删除所有值为“2”的键值对:hash={value2:"1",value3:"6"}怎么做? 最佳答案 这是如何使用delete_if?hash={value1:"2",value2:"1",value3:"6",value4:"2"}hash.delete_if{|_,v|v=="2"}#=>{:value2=>"1",:value3=>"6"}hash#=>{:value2=>"1",:value3=>"